#ifndef __WORK_QUE_H__
#define __WORK_QUE_H__
#include "head.h"

// 客户队列节点
typedef struct tag_node {
    int new_fd;
    struct tag_node *pNext;
} Node_t, *pNode_t;

// 客户队列
typedef struct {
    pNode_t que_head, que_tail; // 队列头和队列尾
    int que_capacity; // 队列最大长度
    int que_size; // 当前队列大小
    pthread_mutex_t mutex; // 队列锁
} Que_t, *pQue_t;

// 初始化客户队列
void que_init(pQue_t pq, int capacity);

// 放元素到队列
void que_set(pQue_t pq, pNode_t pnew); 

// 拿队列元素
void que_get(pQue_t pq, pNode_t *p); 

// 发送文件内容
int train_file(int new_fd);

// 循环接收
int recv_n(int sfd, void* buf, int data_len);

// 循环发送
int send_n(int sfd, void* buf, int data_len);

#endif

